"""
python中的内置方法称为：魔术方法
以下列举部分常用的魔术方法：
    __init__()
        创建对象时，默认调用的方法
    __str__()
        控制类转为字符串
    __lt__()
        大于小于的比较
    __le__()
        大于等于，小于等于的比较
    __eq__()
        等于的比较
"""
class Student:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def __str__(self):
        return f'name:{self.name}, age:{self.age},gender:{self.gender}'

    def __lt__(self, other):
        # lt不能进行等于的比较，会报错
        # return self.age => other.age
        return self.age > other.age

    def __lt2__(self, other):
        return self.age < other.age

    def __le__(self, other):
        return self.age >= other.age

    def __eq__(self, other):
        return self.age == other.age


# __init__的使用
stu1 = Student('张三', 18, '男')
stu2 = Student('李四', 20, '女')

# __str__的使用
print(stu1.__str__())
print(stu2.__str__())

# __lt__的使用
print(f"{stu1.age}大于 {stu2.age}, 是否正确：{stu1.__lt__(stu2)}")

# 自定义的小于的比较
print(f"{stu1.age}小于{stu2.age}, 是否正确：{stu1.__lt2__(stu2)}")

# __le__的使用
print(f"{stu1.age}大于等于 {stu2.age}, 是否正确：{stu1.__le__(stu2)}")

# __eq__的使用
print(f"{stu1.age}等于{stu2.age}, 是否正确：{stu1.__eq__(stu2)}")


